package com.xz.realdemo;

import com.xz.realdemo.model.DataChart;
import com.xz.realdemo.model.DataSet;

import java.io.IOException;

/**
 * @author 张志航     
 * @version V1.0.0
 * @projectName design_mode
 * @title     Client   
 * @package    com.xz.realdemo  
 * @date   2019/12/2 14:37  
 * @explain
 */
public class Client {

    /**
     * 需求:
     *      某数据处理软件需要增加一个图表复制功能,在图表(DataChart)对象中包含一个数据集(DataSet)对象,数据集对象用于封装待显示的数据,
     *      用户可以通过界面上的复制将该图表复制一份,复制后可以得到新的图表对象,然后可以修改新图表的编号、颜色和数据，
     *      使用原型模式深克隆模拟实现。
     * 分析：
     *      使用原型模式深克隆实现。
     * @param args
     */
    public static void main(String[] args) throws IOException, ClassNotFoundException {

        DataSet dataSet = new DataSet();
        dataSet.setContent("这是一个数据集");
        DataChart dataChart = new DataChart();
        dataChart.setId("1");
        dataChart.setColor("red");
        dataChart.setDataSet(dataSet);
        System.out.println(dataChart);
        DataChart newDataChart = dataChart.copy();
        newDataChart.setColor("green");
        newDataChart.getDataSet().setContent("这是一个新的数据集");
        newDataChart.setId("2");
        System.out.println(dataChart);
        System.out.println(newDataChart);
    }

}
